
class Solution98 {
    // 用long的最小值,
    private long prev = Long.MIN_VALUE ;
    public boolean isValidBST(TreeNode root) {
       if(root == null) return true ;

       // 中序遍历 : 二叉搜索, 中序遍历出来的一定是 一个有序的递增序列 ,
        // 用prev来记录 中序遍历上一个结点的val

        // 左
        boolean left = isValidBST(root.left) ;
        if(left == false) return false ;  // 如果左不是就直接返回 , 剪枝

        // 中
        boolean cur = false ;
        // 如果 当前 大于 上一个 , cur=true
        if(root.val > prev){
            cur = true ;
        }

        prev = root.val ;

        // 右
       boolean right = isValidBST(root.right) ;

       // 最后返回 left 和 cur 和 right 结果
        // 要求根结点 , 左子树, 右子树 都满足 二叉搜索 才返回true;
       return left && cur && right ;
    }
}


